// 483 最小好进制
// https://leetcode.cn/problems/smallest-good-base/description/

/**
 * 以字符串的形式给出 n , 以字符串的形式返回 n 的最小 好进制  。

如果 n 的  k(k>=2) 进制数的所有数位全为1，则称 k(k>=2) 是 n 的一个 好进制 。

 

示例 1：

输入：n = "13"
输出："3"
解释：13 的 3 进制是 111。
示例 2：

输入：n = "4681"
输出："8"
解释：4681 的 8 进制是 11111。
示例 3：

输入：n = "1000000000000000000"
输出："999999999999999999"
解释：1000000000000000000 的 999999999999999999 进制是 11。
 */

/**
 * @param {string} n
 * @return {string}
 */
var smallestGoodBase = function (n) {
    let lastLetter = parseInt(n[n.length - 1]);
    if (lastLetter % 2 === 0) {
        return '' + (BigInt(n) - BigInt(1));
    }

    let numN = parseInt(n);
    for (let i = 2; i < numN; i++) {
        let findResult = false;
        let shang = numN;
        while (shang >= i) {
            let remain = shang % i;
            shang = Math.floor(shang / i);

            if (remain !== 1) {
                break;
            }
        }

        if (shang === 1) {
            return '' + i;
        }
    }

    return '' + (numN - 1);
};

let strAdd = function (str1, str2) {
    let result = '';
    let digits = Math.min(str1.length, str2.length); // 相加的位数，取两个数之间较小的那个
};

var test = function (n) {
    var result = smallestGoodBase(n);

    console.log(`${n} smallest is ${result}`);
};

// test('13');
// test('4681');
test('1000000000000000000');
